package com.jlkf.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.jlkf.pojo.TblCourse;

public interface TblCourseMapper {
    int deleteByPrimaryKey(Long gId);

    int insert(TblCourse record);

    int insertSelective(TblCourse record);

    TblCourse selectByPrimaryKey(Long gId);

    int updateByPrimaryKeySelective(TblCourse record);

    int updateByPrimaryKey(TblCourse record);
    
    /**
     * pc端热搜列表
     */
    String[] selectTopSearch();
    //查看手动添加的热搜
    String[] selectAutoTopSearch();
    
    /**
     * 查看课程分类视频列表
     */
    List<TblCourse> selectCourseSortList(Map<String,Object> map);
    
    /**
     * pc端搜索课程
     */
    List<Map<String,Object>> searchCourse(Map<String,Object> hashMap);
    //搜索老师
    List<Map<String,Object>> searchTeacher(String content);
    
    /**
     * 课程目录列表
     */
    List<Map<String,Object>> selectCourseCatalogList(Map<String,Object> map);
    //查看用户购买过的课时
    String[] selectUserPayLesson(Integer courseid,Integer userid);
    //课程目录：查看用户购买过的课时
    String[] byselectUserPayLesson(Integer userid);
    
    /** 
     * pc端推荐课程列表
     */
    List<Map<String,Object>> selectRecommendCourseList(Integer userid);
    
    /**
     * pc端课程详情
     */
    Map<String,Object> selectCourseInfo(@Param("courseid")Integer courseid,@Param("userid")Integer userid);
    //查看用户是否有收藏该课程
    int selectIsCollect(Integer courseid,Integer userid);
    //查看用户是否有购买该课程
    int selectIsStudy(Map<String,Object> map);
    //查看用户学习了几门课时
    int selectStudyNums(Integer courseid,Integer userid);
    //查看用户最近播放的视频
    Integer selectRecentlyPlayed(Integer userid,Integer courseid);
    
    /**
     * 确认订单
     */
    //查看课程下面的课时数
    List<Map<String,Object>> selectCoursebyLesson(@Param("lessid") String lessid);
    //查看可获得的积分
    Long selectSumIntegeal(@Param("lessid") String lessid);
    //查看用户已经购买的课时
    List<Map<String,Object>> selectPurchaseLesson(Integer userid);
    //查看课程信息
    Map<String,Object> selectCourseDetails(Integer courseid);
    //查看用户信息
    Map<String,Object> selectUserInfo(Integer userid);
    //查看该课程可兑换多少积分
    String selectIntegral(Integer userid);
    //查看vip的折扣百分比
    Map<String,Object> selectVipInfo();
    
    /**
	 * 更新课程为已分享状态
	 */
    int shareCourse(Integer courseid);
    
    /**
     * 减少用户余额
     */
    int minusUserMoney(Map<String,Object> map);
    //减少用户积分
    int minusUserIntegral(Map<String,Object> map);
    //修改订单状态
    int updateOrderStatus(String orderid,String G_VERSION);
    //增加消息表记录
    int insertMessageRecord(Map<String,Object> map);
    //根据订单id查询课程id
    Integer[] selectCourseid(String orderid);
    //增加课程的学习人数
    int updateCourseStudyNum(Integer courseid,Integer num);
    
    /**
     * 学习课程视频获得积分
     */
    //查看积分设置
    Map<String,Object> selectIntegralSet();
    //查看该课时可得积分与成长值
    Map<String,Object> selectLessonIntegral(Integer lessonid);
    
    /**
     * pc查看课程评价列表
     */
    List<Map<String,Object>> selectCourseCommentList(Map<String,Object> map);
    
    /**
     * pc发布课程评价
     */
    int insertCourseComment(Map<String,Object> map);
    //查看课程平均分
    Integer selectCourseAvg(Integer courseid);
    //修改课程的平均分
    int updateCourseAvg(Integer courseid,Integer avg);
    //评价之前查看该用户有没有评价过
    int selectUserCommentNum(Integer userid,Integer courseid);
    
    /**
     * pc端全部作业
     */
    List<Map<String,Object>> selectPcAllJob(Integer courseid);
    
    /**
     * 开始学习
     */
    int insertLessonStudy(Integer userid,Integer courseid,Integer lessonid);
    //查看该课程用户是否已经学习
    int selectUserIsStudy(Integer userid,Integer courseid);
    //查看该课时用户是否已经学习
    int selectLessonIsStudy(Integer userid,Integer courseid,Integer lessonid);
    
    /**
     * 三大分类列表
     */
    //查看职业方向或者知识体系或者特色课程列表
    List<Map<String,Object>> selectBigSortList(@Param("type") Integer type,@Param("param") Integer param);
    //查看某个列表下面的课时数
    List<Map<String,Object>> selectCourseNum(Integer G_COURSE_TYPE_ID,Integer G_COURSE_SUPER_TYPE_ID);
    //查看某个列表下的阶段
    String[] selectStageList(Integer profession_sort_id);
    
    /**
     * 查看体系列表详情
     */
    List<Map<String,Object>> selectBigSortDetails(Integer type,Integer professionid);
    //查看职业方向详情
    List<Map<String,Object>> selectJobDirectionDetails(Integer professionid);
    //查看知识体系详情
    List<Map<String,Object>> selectKnowledgeList(Integer type,Integer professionid);
    Map<String,Object> selectKnowledgeList2(Integer type,Integer professionid);
    
    /**
     * 学习中心（查看我的课程）
     */
    List<Map<String,Object>> selectMyCourse(Integer userid);
    //查看我学习的课程
    List<Map<String,Object>> selectMyStudyCourses(Integer userid);
    
    /**
     * 学习中心（我的作业）
     */
    List<Map<String,Object>> selectMyLearningWork(Integer userid);
    
    /**
     * 学习中心（我的职业）
     */
    List<Map<String,Object>> selectMyJobCourse(Map<String,Object> map);
    //查看用户学习有没有购买该课程
    String[] selectMyStudyCourse(Integer userid,Integer courseid);
    
    /**
     * 历史记录列表
     */
    List<Map<String,Object>> selectHistoryRecord(Integer userid);
    
    /**
     * 删除历史记录
     */
    int deleteHistoryRecord(Integer userid);
    
    /**
     * 收藏老师
     */
    int collectTeacher(Integer userid,Integer teacherid);
    //收藏之前查看是否已经收藏过
    int selectIsCollectcollectTeacher(Integer userid,Integer teacherid);
    
    /**
     * 取消收藏老师
     */
    int cancelCollectTeacher(Integer userid,Integer teacherid);
    
    /**
     * 查看特色课程分类视频列表
     */
    List<Map<String,Object>> selectFeatureCourseSortList(Map<String,Object> map);
    //查看特色分类id列表
    Integer[] selectFeatureIDSortList();
    
    /**
     * 我的就业班
     */
    Map<String,Object> selectMyEmployment(String courseName);
    
    /**
     * 根据课程名称自动联想筛选        
     */
    List<String> searchCourseAssociate(String courseName);
    
    /**
     *  首页默认课程
     * */
    List<TblCourse> selectListByType(Map<String, Object> map);
    
    /**
     * 查询详情
     */
    TblCourse selectDetail(Long gId);
    
    /**
     * 设置折扣
     */
    int updateDiscount(Map<String, Object> map);
    
    /**
     * 更新用户成长值
     */
    int updateUserGrowthValue(Integer userid,Integer growthValue);
    
    /**
     * 职业方向列表
     */
    List<Map<String,Object>> selectJobList();
    
    /**
     * 查看平台费用折扣
     */
    Integer selectPlatformDiscount();
    
    /**
     * 获取活动页面
     */
    Map<String,Object> getActivity();
    
    /**
     * 填写表单
     */
    int insertForm(Map<String,Object> map);
    //查看该手机号是否存在
    int selectPhoneIsExist(String phone);
    //注册用户
    int insertUser(String phont,String G_USER_NO);
    
}